package 两个链表的公共节点;

import 公共字符串.Main;

import java.util.*;

class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode cur1 = pHead1;
        ListNode cur2 = pHead2;
        while (cur1 != cur2) {
            cur1 = cur1 != null ? cur1.next : pHead2;
            cur2 = cur2 != null ? cur2.next : pHead1;
        }
        return cur1;
    }
}


//public class Solution {
//    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
//        if (pHead1 == null || pHead2 == null) {
//            return null;
//        }
//        int len1 = size(pHead1);
//        int len2 = size(pHead2);
//        int len = Math.abs(len1 - len2);
//        if (len1 > len2) {
//            while (len-- > 0) {
//                if (pHead1.val == pHead2.val) {
//                    return pHead1;
//                }
//                pHead1 = pHead1.next;
//            }
//        } else {
//            while (len-- > 0) {
//                if (pHead1.val == pHead2.val) {
//                    return pHead1;
//                }
//                pHead2 = pHead2.next;
//            }
//        }
//        while (pHead1 != null) {
//            if (pHead1.val == pHead2.val) {
//                return pHead1;
//            }
//            pHead1 = pHead1.next;
//            pHead2 = pHead2.next;
//        }
//        return null;
//    }
//
//    private int size(ListNode head) {
//        ListNode cur = head;
//        int ret = 1;
//        while (cur != null) {
//            cur = cur.next;
//            ret++;
//        }
//        return ret;
//    }
//}
//

